home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Shareware / IDimager Personal 4.2.0.3 / setup_IDimager_Personal_V4.exe / {app} / Scripts / Meta Data Scripts / Exif Date Digitized to Date Original.psc < prev    next >
Text File  |  2008-08-15  |  3KB  |  77 lines

  1. var
  2.   i: Integer;
  3.   ATif: TTif;
  4.   ATagDigi, ATagOri: TTifTag;
  5.   ACatItem: TcatalogItem;
  6.   AXmp: TXmp;
  7. begin
  8.   Progress.Cancel := False;
  9.   Progress.UseProgress;
  10.   Progress.Max := Selected.Count;
  11.   Progress.Pos := 0;
  12.   Progress.Show;
  13.  
  14.   ACatItem := TCatalogItem.Create(nil);
  15.     for i := 0 to Selected.Count - 1 do
  16.     begin
  17.       Progress.Pos := i + 1;
  18.       Progress.ProgressText := Selected.Items[i].FileNameOnly;
  19.  
  20.       // skip read only files
  21.       if FileIsReadOnly (Selected.Items[i].FileName) or (not Selected.Items[i].MediumLoaded) then
  22.         Continue;
  23.  
  24.       ATif := TTif.Create(nil);
  25.       AXmp := TXmp.Create(nil);
  26.         ATif.FileName := Selected.Items[i].ExifFileName;
  27.  
  28.         // load the meta data
  29.         ATif.Load (True, False);
  30.  
  31.         // find the tags
  32.         ATagDigi := ATif.FindTag ($9004, [itBase, itExif]);
  33.         ATagOri  := ATif.FindTag ($9003, [itBase, itExif]);
  34.  
  35.         if (ATagDigi <> nil) and (ATagOri <> nil) then        // are both tags there?
  36.         begin
  37.           //if Nvl(ATagOri.Value, '') = Nvl(ATagDigi.Value, '') then
  38.             //Continue;
  39.  
  40.           ATagOri.Value := ATagDigi.Value;                // set original date to date digitized
  41.           ATif.UpdateTags;
  42.  
  43.           // update the catalog if available
  44.           if Catalog.FindImageCombined (Selected.Items[i], ACatItem, False, phtNone) then
  45.           begin                                                                      
  46.             Selected.Items[i].UpdateFileInfoBase;
  47.  
  48.             ACatItem.FileStamp      := Selected.Items[i].FileStamp;
  49.             ACatItem.FileSize       := Selected.Items[i].FileSize;
  50.             ACatItem.DateTimeStamp  := ATif.PhotoExifDate;
  51.  
  52.             // the Exif is already updated, but the XMP is not
  53.             Catalog.LoadXMPForItem (ACatItem, AXmp, Options.CachedXMP);
  54.             AXmp.InitializeFromTif (ATif, True, True, False, False, txusAll);
  55.             AXmp.QuickSetProperty ('http://ns.adobe.com/photoshop/1.0/', 'photoshop:DateCreated', ATif.PhotoExifDate);
  56.             Catalog.SaveXMPForItem (ACatItem, AXmp, Options.CachedXMP);
  57.           end;
  58.         end;
  59.         ATif.Free;
  60.         AXmp.Free;
  61.  
  62.       if Progress.Cancel then
  63.         break;
  64.     end;
  65.     ACatItem.Free;
  66.  
  67.   Progress.Hide;
  68.  
  69.   if Progress.Cancel then
  70.     Say ('Cancelled')
  71.   else
  72.   begin
  73.     Say ('Finished. You may need to refresh the collection in order to see the changes.');
  74.     InvalidateCollection;
  75.   end;
  76. end;
  77.